﻿using CommunityToolkit.Mvvm.ComponentModel;
using DataBaseLib.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CommunityToolkitDemo.ObserverModel
{
    /// <summary>
    /// 在日常开发中，可能有些数据模型是来自数据库或其它地方，而这些模型不允许我们去重新定义，但是我们又想在属性更改时触发通知事件，这个时候就可以重新包装这些非Observable的数据模型。
    /// </summary>
    public class ObservableUser : ObservableObject
    {
        private readonly UserInfo user;

        public ObservableUser(UserInfo user) => this.user = user;

        public string Name
        {
            get => user.Name;
            set => SetProperty(user.Name, value, user, (u, n) => u.Name = n);
        }

        public int Id
        {
            get => user.Id;
            set => SetProperty(user.Id, value, user, (u, n) => u.Id = n);
        }

        //其他属性类似以上包装
    }
}
